home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / dkbuts.zip / CHEMCONV.C < prev    next >
C/C++ Source or Header  |  1991-05-16  |  3KB  |  105 lines

  1. #include <stdio.h>
  2.  
  3. char colors[][128]={
  4. "COLOUR RED 0.0 GREEN 0.0 BLUE 0.0",
  5. "COLOUR BLUE 1.0",
  6. "COLOUR GREEN 1.0",
  7. "COLOUR BLUE 1.0 GREEN 1.0",
  8. "COLOUR RED 1.0",
  9. "COLOUR RED 1.0 BLUE 1.0",
  10. "COLOUR RED 0.647059 GREEN 0.164706 BLUE 0.164706",
  11. "COLOUR RED 0.658824 GREEN 0.658824 BLUE 0.658824",
  12. "COLOUR RED 0.752941 GREEN 0.752941 BLUE 0.752941",
  13. "COLOUR RED 0.74902 GREEN 0.847059 BLUE 0.847059",
  14. "COLOUR RED 0.196078 GREEN 0.8 BLUE 0.196078",
  15. "COLOUR RED 0.678431 GREEN 0.917647 BLUE 0.917647",
  16. "COLOUR RED 0.737255 GREEN 0.560784 BLUE 0.560784",
  17. "COLOUR RED 0.917647 GREEN 0.678431 BLUE 0.917647",
  18. "COLOUR RED 1.0 GREEN 1.0",
  19. "COLOUR RED 1.0 GREEN 1.0 BLUE 1.0"};
  20.  
  21. FILE *in, *out;
  22. char buff[256];
  23.  
  24. main(int ac, char *av[]) {
  25.   char infile[256], outfile[256];
  26.   int frames=1;
  27.   float xr, yr, zr;
  28.   if (ac<2) {
  29.     printf("CHEM2DKB v1.1s infile [outfile]\n");
  30.     printf("Converts CHEMVIEW data file to DKB datafile.\n");
  31.     exit(1);
  32.   }
  33.   strcpy(infile,strupr(av[1]));
  34.   if (ac>2) strcpy(outfile,strupr(av[2]));
  35.     else strcpy(outfile,av[1]);
  36.   if (ac>2&&strstr(av[2],"/S")) {
  37.     strcpy(outfile,av[1]);
  38.     printf("\n# of frames:");
  39.     scanf("%d", &frames);
  40.     printf("\nInitial X,Y,Z rot:");
  41.     scanf("%f,%f,%f",&xr,&yr,&zr);
  42.   }
  43.   strcat(infile,".DAT");
  44.   strcat(outfile,".DKB");
  45.   in=fopen(infile, "r");
  46.   if (!in) exit(1);
  47.   out=fopen(outfile, "w");
  48.   write_header();
  49.   while (!feof(in)) {
  50.     fgets(buff, 255, in);
  51.     if (strstr(strupr(buff),"ATOMLOCATION")) write_atom();
  52.   }
  53.   write_footer();
  54.   fcloseall();
  55. }
  56.  
  57. write_header() {
  58.   fprintf(out,"VIEW_POINT\n");
  59.   fprintf(out,"    LOCATION <0.0  0.0  -10.0>     {Z may need modification}\n");
  60.   fprintf(out,"    DIRECTION <0.0 0.0  2.0>\n");
  61.   fprintf(out,"    UP  <0.0  1.0  0.0>\n");
  62.   fprintf(out,"    RIGHT <1.33333 0.0 0.0>\n");
  63.   fprintf(out,"    LOOK_AT <0.0  0.0  0.0>\n");
  64.   fprintf(out,"END_VIEW_POINT\n\n");
  65.   fprintf(out,"OBJECT\n");
  66.   fprintf(out,"    SPHERE <0.0  0.0  0.0>  2.0 END_SPHERE\n");
  67.   fprintf(out,"    TRANSLATE <500.0  500.0  -100.0> {Z may need modification}\n");
  68.   fprintf(out,"    COLOUR RED 1.0 GREEN 1.0 BLUE 1.0\n");
  69.   fprintf(out,"    AMBIENT 1.0\n");
  70.   fprintf(out,"    DIFFUSE 0.0\n");
  71.   fprintf(out,"    LIGHT_SOURCE\n");
  72.   fprintf(out,"END_OBJECT\n\n");
  73.   fprintf(out,"OBJECT\n");
  74.   fprintf(out,"    SPHERE <0.0  0.0  0.0>  2.0 END_SPHERE\n");
  75.   fprintf(out,"    TRANSLATE <-500.0  50.0  -1000.0> {Z may need modification}\n");
  76.   fprintf(out,"    COLOUR RED 0.2 GREEN 0.2 BLUE 0.2\n");
  77.   fprintf(out,"    AMBIENT 1.0\n");
  78.   fprintf(out,"    DIFFUSE 0.0\n");
  79.   fprintf(out,"    LIGHT_SOURCE\n");
  80.   fprintf(out,"END_OBJECT\n\n");
  81.   fprintf(out,"COMPOSITE\n");
  82. }
  83.  
  84. write_atom() {
  85.   int color, i;
  86.   float x, y, z, r, j;
  87.   sscanf(buff,"ATOMLOCATION(%d,L(%f,%f,%f,%f,%f,%f,%f,%d",&j,&x,&y,&z,&r,&j,&j,&j,&color);
  88.   fprintf(out,"    OBJECT\n");
  89.     fprintf(out,"        SPHERE <%6.4f %6.4f %6.4f> %f END_SPHERE\n",x/1300.0,y/1300.0,z/1300.0,r);
  90.     fprintf(out,"        COLOUR %s\n",colors[color]);
  91.   fprintf(out,"        TEXTURE\n");
  92.   fprintf(out,"            AMBIENT 0.3\n");
  93.   fprintf(out,"            DIFFUSE 0.7\n");
  94.   fprintf(out,"            PHONG 1.0\n");
  95.   fprintf(out,"            PHONGSIZE 40.0\n");
  96.   fprintf(out,"        END_TEXTURE\n");
  97.   fprintf(out,"    END_OBJECT\n");
  98. }
  99.  
  100. write_footer() {
  101.   fprintf(out,"TRANSLATE <0.0  0.0  0.0>\n");
  102.   fprintf(out,"ROTATE    <0.0  0.0  0.0>\n");
  103.   fprintf(out,"END_COMPOSITE\n");
  104. }
  105.